home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / c / objam01.lha / objam / runtime / include / inline / objc.h
Encoding:
C/C++ Source or Header  |  1995-02-13  |  20.1 KB  |  712 lines

  1. #ifndef _INLINE_OBJC_H
  2. #define _INLINE_OBJC_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL
  11. #define BASE_EXT_DECL0 extern struct ObjcBase * ObjcBase;
  12. #endif
  13. #ifndef BASE_PAR_DECL
  14. #define BASE_PAR_DECL
  15. #define BASE_PAR_DECL0 void
  16. #endif
  17. #ifndef BASE_NAME
  18. #define BASE_NAME ObjcBase
  19. #endif
  20.  
  21. BASE_EXT_DECL0
  22.  
  23. extern __inline char * 
  24. NXCopyStringBuffer (BASE_PAR_DECL const char *buffer)
  25. {
  26.   BASE_EXT_DECL
  27.   register char *  _res  __asm("d0");
  28.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  29.   register const char *a1 __asm("a1") = buffer;
  30.   __asm __volatile ("jsr a6@(-0x84)"
  31.   : "=r" (_res)
  32.   : "r" (a6), "r" (a1)
  33.   : "a0","a1","d0","d1", "memory");
  34.   return _res;
  35. }
  36. extern __inline char * 
  37. NXCopyStringBufferFromZone (BASE_PAR_DECL const char *buffer,NXZone *zone)
  38. {
  39.   BASE_EXT_DECL
  40.   register char *  _res  __asm("d0");
  41.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  42.   register const char *a1 __asm("a1") = buffer;
  43.   register NXZone *a0 __asm("a0") = zone;
  44.   __asm __volatile ("jsr a6@(-0x8a)"
  45.   : "=r" (_res)
  46.   : "r" (a6), "r" (a1), "r" (a0)
  47.   : "a0","a1","d0","d1", "memory");
  48.   return _res;
  49. }
  50. extern __inline NXZone * 
  51. NXCreateChildZone (BASE_PAR_DECL NXZone *parentZone,size_t startSize,size_t granularity,int canFree)
  52. {
  53.   BASE_EXT_DECL
  54.   register NXZone *  _res  __asm("d0");
  55.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  56.   register NXZone *a0 __asm("a0") = parentZone;
  57.   register size_t d0 __asm("d0") = startSize;
  58.   register size_t d1 __asm("d1") = granularity;
  59.   register int d2 __asm("d2") = canFree;
  60.   __asm __volatile ("jsr a6@(-0x2a)"
  61.   : "=r" (_res)
  62.   : "r" (a6), "r" (a0), "r" (d0), "r" (d1), "r" (d2)
  63.   : "a0","a1","d0","d1","d2", "memory");
  64.   return _res;
  65. }
  66. extern __inline NXZone * 
  67. NXCreateZone (BASE_PAR_DECL size_t startSize,size_t granularity,int canFree)
  68. {
  69.   BASE_EXT_DECL
  70.   register NXZone *  _res  __asm("d0");
  71.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  72.   register size_t d0 __asm("d0") = startSize;
  73.   register size_t d1 __asm("d1") = granularity;
  74.   register int d2 __asm("d2") = canFree;
  75.   __asm __volatile ("jsr a6@(-0x24)"
  76.   : "=r" (_res)
  77.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2)
  78.   : "a0","a1","d0","d1","d2", "memory");
  79.   return _res;
  80. }
  81. extern __inline NXZone * 
  82. NXDefaultMallocZone (BASE_PAR_DECL0)
  83. {
  84.   BASE_EXT_DECL
  85.   register NXZone *  _res  __asm("d0");
  86.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  87.   __asm __volatile ("jsr a6@(-0x66)"
  88.   : "=r" (_res)
  89.   : "r" (a6)
  90.   : "a0","a1","d0","d1", "memory");
  91.   return _res;
  92. }
  93. extern __inline void 
  94. NXDestroyZone (BASE_PAR_DECL NXZone *zone)
  95. {
  96.   BASE_EXT_DECL
  97.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  98.   register NXZone *a0 __asm("a0") = zone;
  99.   __asm __volatile ("jsr a6@(-0x3c)"
  100.   : /* no output */
  101.   : "r" (a6), "r" (a0)
  102.   : "a0","a1","d0","d1", "memory");
  103. }
  104. extern __inline int 
  105. NXMallocCheck (BASE_PAR_DECL0)
  106. {
  107.   BASE_EXT_DECL
  108.   register int  _res  __asm("d0");
  109.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  110.   __asm __volatile ("jsr a6@(-0x6c)"
  111.   : "=r" (_res)
  112.   : "r" (a6)
  113.   : "a0","a1","d0","d1", "memory");
  114.   return _res;
  115. }
  116. extern __inline void 
  117. NXMergeZone (BASE_PAR_DECL NXZone *zone)
  118. {
  119.   BASE_EXT_DECL
  120.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  121.   register NXZone *a0 __asm("a0") = zone;
  122.   __asm __volatile ("jsr a6@(-0x30)"
  123.   : /* no output */
  124.   : "r" (a6), "r" (a0)
  125.   : "a0","a1","d0","d1", "memory");
  126. }
  127. extern __inline void 
  128. NXNameZone (BASE_PAR_DECL NXZone *zone,const char *name)
  129. {
  130.   BASE_EXT_DECL
  131.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  132.   register NXZone *a0 __asm("a0") = zone;
  133.   register const char *a1 __asm("a1") = name;
  134.   __asm __volatile ("jsr a6@(-0x5a)"
  135.   : /* no output */
  136.   : "r" (a6), "r" (a0), "r" (a1)
  137.   : "a0","a1","d0","d1", "memory");
  138. }
  139. extern __inline NXAtom 
  140. NXUniqueString (BASE_PAR_DECL const char *buffer)
  141. {
  142.   BASE_EXT_DECL
  143.   register NXAtom  _res  __asm("d0");
  144.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  145.   register const char *a1 __asm("a1") = buffer;
  146.   __asm __volatile ("jsr a6@(-0x72)"
  147.   : "=r" (_res)
  148.   : "r" (a6), "r" (a1)
  149.   : "a0","a1","d0","d1", "memory");
  150.   return _res;
  151. }
  152. extern __inline NXAtom 
  153. NXUniqueStringNoCopy (BASE_PAR_DECL const char *buffer)
  154. {
  155.   BASE_EXT_DECL
  156.   register NXAtom  _res  __asm("d0");
  157.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  158.   register const char *a1 __asm("a1") = buffer;
  159.   __asm __volatile ("jsr a6@(-0x7e)"
  160.   : "=r" (_res)
  161.   : "r" (a6), "r" (a1)
  162.   : "a0","a1","d0","d1", "memory");
  163.   return _res;
  164. }
  165. extern __inline NXAtom 
  166. NXUniqueStringWithLength (BASE_PAR_DECL const char *buffer,int length)
  167. {
  168.   BASE_EXT_DECL
  169.   register NXAtom  _res  __asm("d0");
  170.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  171.   register const char *a1 __asm("a1") = buffer;
  172.   register int d0 __asm("d0") = length;
  173.   __asm __volatile ("jsr a6@(-0x78)"
  174.   : "=r" (_res)
  175.   : "r" (a6), "r" (a1), "r" (d0)
  176.   : "a0","a1","d0","d1", "memory");
  177.   return _res;
  178. }
  179. extern __inline void * 
  180. NXZoneCalloc (BASE_PAR_DECL NXZone *zone,int numElements,int elementSize)
  181. {
  182.   BASE_EXT_DECL
  183.   register void *  _res  __asm("d0");
  184.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  185.   register NXZone *a0 __asm("a0") = zone;
  186.   register int d0 __asm("d0") = numElements;
  187.   register int d1 __asm("d1") = elementSize;
  188.   __asm __volatile ("jsr a6@(-0x48)"
  189.   : "=r" (_res)
  190.   : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  191.   : "a0","a1","d0","d1", "memory");
  192.   return _res;
  193. }
  194. extern __inline void 
  195. NXZoneFree (BASE_PAR_DECL NXZone *zone,void *block)
  196. {
  197.   BASE_EXT_DECL
  198.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  199.   register NXZone *a0 __asm("a0") = zone;
  200.   register void *a1 __asm("a1") = block;
  201.   __asm __volatile ("jsr a6@(-0x54)"
  202.   : /* no output */
  203.   : "r" (a6), "r" (a0), "r" (a1)
  204.   : "a0","a1","d0","d1", "memory");
  205. }
  206. extern __inline NXZone * 
  207. NXZoneFromPtr (BASE_PAR_DECL void *ptr)
  208. {
  209.   BASE_EXT_DECL
  210.   register NXZone *  _res  __asm("d0");
  211.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  212.   register void *a1 __asm("a1") = ptr;
  213.   __asm __volatile ("jsr a6@(-0x36)"
  214.   : "=r" (_res)
  215.   : "r" (a6), "r" (a1)
  216.   : "a0","a1","d0","d1", "memory");
  217.   return _res;
  218. }
  219. extern __inline void * 
  220. NXZoneMalloc (BASE_PAR_DECL NXZone *zone,int size)
  221. {
  222.   BASE_EXT_DECL
  223.   register void *  _res  __asm("d0");
  224.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  225.   register NXZone *a0 __asm("a0") = zone;
  226.   register int d0 __asm("d0") = size;
  227.   __asm __volatile ("jsr a6@(-0x42)"
  228.   : "=r" (_res)
  229.   : "r" (a6), "r" (a0), "r" (d0)
  230.   : "a0","a1","d0","d1", "memory");
  231.   return _res;
  232. }
  233. extern __inline void 
  234. NXZonePtrInfo (BASE_PAR_DECL void *ptr)
  235. {
  236.   BASE_EXT_DECL
  237.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  238.   register void *a1 __asm("a1") = ptr;
  239.   __asm __volatile ("jsr a6@(-0x60)"
  240.   : /* no output */
  241.   : "r" (a6), "r" (a1)
  242.   : "a0","a1","d0","d1", "memory");
  243. }
  244. extern __inline void * 
  245. NXZoneRealloc (BASE_PAR_DECL NXZone *zone,void *block,int size)
  246. {
  247.   BASE_EXT_DECL
  248.   register void *  _res  __asm("d0");
  249.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  250.   register NXZone *a0 __asm("a0") = zone;
  251.   register void *a1 __asm("a1") = block;
  252.   register int d0 __asm("d0") = size;
  253.   __asm __volatile ("jsr a6@(-0x4e)"
  254.   : "=r" (_res)
  255.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  256.   : "a0","a1","d0","d1", "memory");
  257.   return _res;
  258. }
  259. extern __inline void 
  260. __objc_archiving_fatal (BASE_PAR_DECL const char* format,int arg1)
  261. {
  262.   BASE_EXT_DECL
  263.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  264.   register const char* a0 __asm("a0") = format;
  265.   register int d0 __asm("d0") = arg1;
  266.   __asm __volatile ("jsr a6@(-0xb4)"
  267.   : /* no output */
  268.   : "r" (a6), "r" (a0), "r" (d0)
  269.   : "a0","a1","d0","d1", "memory");
  270. }
  271. extern __inline void 
  272. __objc_print_dtable_stats (BASE_PAR_DECL0)
  273. {
  274.   BASE_EXT_DECL
  275.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  276.   __asm __volatile ("jsr a6@(-0x150)"
  277.   : /* no output */
  278.   : "r" (a6)
  279.   : "a0","a1","d0","d1", "memory");
  280. }
  281. extern __inline void * 
  282. __objc_xcalloc (BASE_PAR_DECL int nelem,int size)
  283. {
  284.   BASE_EXT_DECL
  285.   register void *  _res  __asm("d0");
  286.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  287.   register int d0 __asm("d0") = nelem;
  288.   register int d1 __asm("d1") = size;
  289.   __asm __volatile ("jsr a6@(-0xa2)"
  290.   : "=r" (_res)
  291.   : "r" (a6), "r" (d0), "r" (d1)
  292.   : "a0","a1","d0","d1", "memory");
  293.   return _res;
  294. }
  295. extern __inline void 
  296. __objc_xfree (BASE_PAR_DECL void *mem)
  297. {
  298.   BASE_EXT_DECL
  299.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  300.   register void *a0 __asm("a0") = mem;
  301.   __asm __volatile ("jsr a6@(-0xa8)"
  302.   : /* no output */
  303.   : "r" (a6), "r" (a0)
  304.   : "a0","a1","d0","d1", "memory");
  305. }
  306. extern __inline void * 
  307. __objc_xmalloc (BASE_PAR_DECL int size)
  308. {
  309.   BASE_EXT_DECL
  310.   register void *  _res  __asm("d0");
  311.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  312.   register int d0 __asm("d0") = size;
  313.   __asm __volatile ("jsr a6@(-0x90)"
  314.   : "=r" (_res)
  315.   : "r" (a6), "r" (d0)
  316.   : "a0","a1","d0","d1", "memory");
  317.   return _res;
  318. }
  319. extern __inline void * 
  320. __objc_xmalloc_from_zone (BASE_PAR_DECL int size,NXZone* zone)
  321. {
  322.   BASE_EXT_DECL
  323.   register void *  _res  __asm("d0");
  324.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  325.   register int d0 __asm("d0") = size;
  326.   register NXZone* a0 __asm("a0") = zone;
  327.   __asm __volatile ("jsr a6@(-0x96)"
  328.   : "=r" (_res)
  329.   : "r" (a6), "r" (d0), "r" (a0)
  330.   : "a0","a1","d0","d1", "memory");
  331.   return _res;
  332. }
  333. extern __inline void * 
  334. __objc_xrealloc (BASE_PAR_DECL void* mem,int size)
  335. {
  336.   BASE_EXT_DECL
  337.   register void *  _res  __asm("d0");
  338.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  339.   register void* a0 __asm("a0") = mem;
  340.   register int d0 __asm("d0") = size;
  341.   __asm __volatile ("jsr a6@(-0x9c)"
  342.   : "=r" (_res)
  343.   : "r" (a6), "r" (a0), "r" (d0)
  344.   : "a0","a1","d0","d1", "memory");
  345.   return _res;
  346. }
  347. extern __inline BOOL 
  348. __objclib_init (BASE_PAR_DECL struct __objclib_init_data *data)
  349. {
  350.   BASE_EXT_DECL
  351.   register BOOL  _res  __asm("d0");
  352.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  353.   register struct __objclib_init_data *a0 __asm("a0") = data;
  354.   __asm __volatile ("jsr a6@(-0x1e)"
  355.   : "=r" (_res)
  356.   : "r" (a6), "r" (a0)
  357.   : "a0","a1","d0","d1", "memory");
  358.   return _res;
  359. }
  360. extern __inline id 
  361. class_create_instance (BASE_PAR_DECL OCClass* class)
  362. {
  363.   BASE_EXT_DECL
  364.   register id  _res  __asm("d0");
  365.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  366.   register OCClass* a1 __asm("a1") = class;
  367.   __asm __volatile ("jsr a6@(-0xba)"
  368.   : "=r" (_res)
  369.   : "r" (a6), "r" (a1)
  370.   : "a0","a1","d0","d1", "memory");
  371.   return _res;
  372. }
  373. extern __inline id 
  374. class_create_instance_from_zone (BASE_PAR_DECL OCClass* class,NXZone* zone)
  375. {
  376.   BASE_EXT_DECL
  377.   register id  _res  __asm("d0");
  378.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  379.   register OCClass* a1 __asm("a1") = class;
  380.   register NXZone* a0 __asm("a0") = zone;
  381.   __asm __volatile ("jsr a6@(-0xc0)"
  382.   : "=r" (_res)
  383.   : "r" (a6), "r" (a1), "r" (a0)
  384.   : "a0","a1","d0","d1", "memory");
  385.   return _res;
  386. }
  387. extern __inline char * 
  388. method_get_first_argument (BASE_PAR_DECL struct objc_method* m,arglist_t argframe,const char** type)
  389. {
  390.   BASE_EXT_DECL
  391.   register char *  _res  __asm("d0");
  392.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  393.   register struct objc_method* a1 __asm("a1") = m;
  394.   register arglist_t a2 __asm("a2") = argframe;
  395.   register const char** a0 __asm("a0") = type;
  396.   __asm __volatile ("jsr a6@(-0x114)"
  397.   : "=r" (_res)
  398.   : "r" (a6), "r" (a1), "r" (a2), "r" (a0)
  399.   : "a0","a1","a2","d0","d1", "memory");
  400.   return _res;
  401. }
  402. extern __inline char * 
  403. method_get_next_argument (BASE_PAR_DECL arglist_t argframe,const char **type)
  404. {
  405.   BASE_EXT_DECL
  406.   register char *  _res  __asm("d0");
  407.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  408.   register arglist_t a2 __asm("a2") = argframe;
  409.   register const char **a0 __asm("a0") = type;
  410.   __asm __volatile ("jsr a6@(-0x11a)"
  411.   : "=r" (_res)
  412.   : "r" (a6), "r" (a2), "r" (a0)
  413.   : "a0","a1","a2","d0","d1", "memory");
  414.   return _res;
  415. }
  416. extern __inline char * 
  417. method_get_nth_argument (BASE_PAR_DECL struct objc_method* m,arglist_t argframe,int arg,const char **type)
  418. {
  419.   BASE_EXT_DECL
  420.   register char *  _res  __asm("d0");
  421.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  422.   register struct objc_method* a1 __asm("a1") = m;
  423.   register arglist_t a2 __asm("a2") = argframe;
  424.   register int d0 __asm("d0") = arg;
  425.   register const char **a0 __asm("a0") = type;
  426.   __asm __volatile ("jsr a6@(-0x120)"
  427.   : "=r" (_res)
  428.   : "r" (a6), "r" (a1), "r" (a2), "r" (d0), "r" (a0)
  429.   : "a0","a1","a2","d0","d1", "memory");
  430.   return _res;
  431. }
  432. extern __inline int 
  433. method_get_number_of_arguments (BASE_PAR_DECL struct objc_method* m)
  434. {
  435.   BASE_EXT_DECL
  436.   register int  _res  __asm("d0");
  437.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  438.   register struct objc_method* a1 __asm("a1") = m;
  439.   __asm __volatile ("jsr a6@(-0x108)"
  440.   : "=r" (_res)
  441.   : "r" (a6), "r" (a1)
  442.   : "a0","a1","d0","d1", "memory");
  443.   return _res;
  444. }
  445. extern __inline int 
  446. method_get_sizeof_arguments (BASE_PAR_DECL struct objc_method* m)
  447. {
  448.   BASE_EXT_DECL
  449.   register int  _res  __asm("d0");
  450.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  451.   register struct objc_method* a1 __asm("a1") = m;
  452.   __asm __volatile ("jsr a6@(-0x10e)"
  453.   : "=r" (_res)
  454.   : "r" (a6), "r" (a1)
  455.   : "a0","a1","d0","d1", "memory");
  456.   return _res;
  457. }
  458. extern __inline int 
  459. objc_aligned_size (BASE_PAR_DECL const char* type)
  460. {
  461.   BASE_EXT_DECL
  462.   register int  _res  __asm("d0");
  463.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  464.   register const char* a0 __asm("a0") = type;
  465.   __asm __volatile ("jsr a6@(-0xd8)"
  466.   : "=r" (_res)
  467.   : "r" (a6), "r" (a0)
  468.   : "a0","a1","d0","d1", "memory");
  469.   return _res;
  470. }
  471. extern __inline int 
  472. objc_alignof_type (BASE_PAR_DECL const char* type)
  473. {
  474.   BASE_EXT_DECL
  475.   register int  _res  __asm("d0");
  476.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  477.   register const char* a0 __asm("a0") = type;
  478.   __asm __volatile ("jsr a6@(-0xe4)"
  479.   : "=r" (_res)
  480.   : "r" (a6), "r" (a0)
  481.   : "a0","a1","d0","d1", "memory");
  482.   return _res;
  483. }
  484. extern __inline void 
  485. objc_fatal (BASE_PAR_DECL const char* msg)
  486. {
  487.   BASE_EXT_DECL
  488.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  489.   register const char* a0 __asm("a0") = msg;
  490.   __asm __volatile ("jsr a6@(-0xae)"
  491.   : /* no output */
  492.   : "r" (a6), "r" (a0)
  493.   : "a0","a1","d0","d1", "memory");
  494. }
  495. extern __inline unsigned 
  496. objc_get_type_qualifiers (BASE_PAR_DECL const char* type)
  497. {
  498.   BASE_EXT_DECL
  499.   register unsigned  _res  __asm("d0");
  500.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  501.   register const char* a0 __asm("a0") = type;
  502.   __asm __volatile ("jsr a6@(-0x126)"
  503.   : "=r" (_res)
  504.   : "r" (a6), "r" (a0)
  505.   : "a0","a1","d0","d1", "memory");
  506.   return _res;
  507. }
  508. extern __inline int 
  509. objc_promoted_size (BASE_PAR_DECL const char* type)
  510. {
  511.   BASE_EXT_DECL
  512.   register int  _res  __asm("d0");
  513.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  514.   register const char* a0 __asm("a0") = type;
  515.   __asm __volatile ("jsr a6@(-0xea)"
  516.   : "=r" (_res)
  517.   : "r" (a6), "r" (a0)
  518.   : "a0","a1","d0","d1", "memory");
  519.   return _res;
  520. }
  521. extern __inline int 
  522. objc_sizeof_type (BASE_PAR_DECL const char* type)
  523. {
  524.   BASE_EXT_DECL
  525.   register int  _res  __asm("d0");
  526.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  527.   register const char* a0 __asm("a0") = type;
  528.   __asm __volatile ("jsr a6@(-0xde)"
  529.   : "=r" (_res)
  530.   : "r" (a6), "r" (a0)
  531.   : "a0","a1","d0","d1", "memory");
  532.   return _res;
  533. }
  534. extern __inline const char * 
  535. objc_skip_argspec (BASE_PAR_DECL const char* type)
  536. {
  537.   BASE_EXT_DECL
  538.   register const char *  _res  __asm("d0");
  539.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  540.   register const char* a0 __asm("a0") = type;
  541.   __asm __volatile ("jsr a6@(-0x102)"
  542.   : "=r" (_res)
  543.   : "r" (a6), "r" (a0)
  544.   : "a0","a1","d0","d1", "memory");
  545.   return _res;
  546. }
  547. extern __inline const char * 
  548. objc_skip_offset (BASE_PAR_DECL const char* type)
  549. {
  550.   BASE_EXT_DECL
  551.   register const char *  _res  __asm("d0");
  552.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  553.   register const char* a0 __asm("a0") = type;
  554.   __asm __volatile ("jsr a6@(-0xfc)"
  555.   : "=r" (_res)
  556.   : "r" (a6), "r" (a0)
  557.   : "a0","a1","d0","d1", "memory");
  558.   return _res;
  559. }
  560. extern __inline const char * 
  561. objc_skip_type_qualifiers (BASE_PAR_DECL const char* type)
  562. {
  563.   BASE_EXT_DECL
  564.   register const char *  _res  __asm("d0");
  565.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  566.   register const char* a0 __asm("a0") = type;
  567.   __asm __volatile ("jsr a6@(-0xf0)"
  568.   : "=r" (_res)
  569.   : "r" (a6), "r" (a0)
  570.   : "a0","a1","d0","d1", "memory");
  571.   return _res;
  572. }
  573. extern __inline const char * 
  574. objc_skip_typespec (BASE_PAR_DECL const char* type)
  575. {
  576.   BASE_EXT_DECL
  577.   register const char *  _res  __asm("d0");
  578.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  579.   register const char* a0 __asm("a0") = type;
  580.   __asm __volatile ("jsr a6@(-0xf6)"
  581.   : "=r" (_res)
  582.   : "r" (a6), "r" (a0)
  583.   : "a0","a1","d0","d1", "memory");
  584.   return _res;
  585. }
  586. extern __inline id 
  587. object_copy (BASE_PAR_DECL id object)
  588. {
  589.   BASE_EXT_DECL
  590.   register id  _res  __asm("d0");
  591.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  592.   register id a1 __asm("a1") = object;
  593.   __asm __volatile ("jsr a6@(-0xc6)"
  594.   : "=r" (_res)
  595.   : "r" (a6), "r" (a1)
  596.   : "a0","a1","d0","d1", "memory");
  597.   return _res;
  598. }
  599. extern __inline id 
  600. object_copy_from_zone (BASE_PAR_DECL id object,NXZone* zone)
  601. {
  602.   BASE_EXT_DECL
  603.   register id  _res  __asm("d0");
  604.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  605.   register id a1 __asm("a1") = object;
  606.   register NXZone* a0 __asm("a0") = zone;
  607.   __asm __volatile ("jsr a6@(-0xcc)"
  608.   : "=r" (_res)
  609.   : "r" (a6), "r" (a1), "r" (a0)
  610.   : "a0","a1","d0","d1", "memory");
  611.   return _res;
  612. }
  613. extern __inline id 
  614. object_dispose (BASE_PAR_DECL id object)
  615. {
  616.   BASE_EXT_DECL
  617.   register id  _res  __asm("d0");
  618.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  619.   register id a1 __asm("a1") = object;
  620.   __asm __volatile ("jsr a6@(-0xd2)"
  621.   : "=r" (_res)
  622.   : "r" (a6), "r" (a1)
  623.   : "a0","a1","d0","d1", "memory");
  624.   return _res;
  625. }
  626. extern __inline void 
  627. sarray_at_put (BASE_PAR_DECL struct sarray *array,sidx index,void* elem)
  628. {
  629.   BASE_EXT_DECL
  630.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  631.   register struct sarray *a1 __asm("a1") = array;
  632.   register sidx d0 __asm("d0") = index;
  633.   register void* a0 __asm("a0") = elem;
  634.   __asm __volatile ("jsr a6@(-0x144)"
  635.   : /* no output */
  636.   : "r" (a6), "r" (a1), "r" (d0), "r" (a0)
  637.   : "a0","a1","d0","d1", "memory");
  638. }
  639. extern __inline void 
  640. sarray_at_put_safe (BASE_PAR_DECL struct sarray *array,sidx index,void* elem)
  641. {
  642.   BASE_EXT_DECL
  643.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  644.   register struct sarray *a1 __asm("a1") = array;
  645.   register sidx d0 __asm("d0") = index;
  646.   register void* a0 __asm("a0") = elem;
  647.   __asm __volatile ("jsr a6@(-0x14a)"
  648.   : /* no output */
  649.   : "r" (a6), "r" (a1), "r" (d0), "r" (a0)
  650.   : "a0","a1","d0","d1", "memory");
  651. }
  652. extern __inline void 
  653. sarray_free (BASE_PAR_DECL struct sarray *array)
  654. {
  655.   BASE_EXT_DECL
  656.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  657.   register struct sarray *a1 __asm("a1") = array;
  658.   __asm __volatile ("jsr a6@(-0x132)"
  659.   : /* no output */
  660.   : "r" (a6), "r" (a1)
  661.   : "a0","a1","d0","d1", "memory");
  662. }
  663. extern __inline struct sarray * 
  664. sarray_lazy_copy (BASE_PAR_DECL struct sarray *oarr)
  665. {
  666.   BASE_EXT_DECL
  667.   register struct sarray *  _res  __asm("d0");
  668.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  669.   register struct sarray *a1 __asm("a1") = oarr;
  670.   __asm __volatile ("jsr a6@(-0x138)"
  671.   : "=r" (_res)
  672.   : "r" (a6), "r" (a1)
  673.   : "a0","a1","d0","d1", "memory");
  674.   return _res;
  675. }
  676. extern __inline struct sarray * 
  677. sarray_new (BASE_PAR_DECL int size,void *default_element)
  678. {
  679.   BASE_EXT_DECL
  680.   register struct sarray *  _res  __asm("d0");
  681.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  682.   register int d0 __asm("d0") = size;
  683.   register void *a0 __asm("a0") = default_element;
  684.   __asm __volatile ("jsr a6@(-0x12c)"
  685.   : "=r" (_res)
  686.   : "r" (a6), "r" (d0), "r" (a0)
  687.   : "a0","a1","d0","d1", "memory");
  688.   return _res;
  689. }
  690. extern __inline void 
  691. sarray_realloc (BASE_PAR_DECL struct sarray *array,int new_size)
  692. {
  693.   BASE_EXT_DECL
  694.   register struct ObjcBase *a6 __asm("a6") = BASE_NAME;
  695.   register struct sarray *a1 __asm("a1") = array;
  696.   register int d0 __asm("d0") = new_size;
  697.   __asm __volatile ("jsr a6@(-0x13e)"
  698.   : /* no output */
  699.   : "r" (a6), "r" (a1), "r" (d0)
  700.   : "a0","a1","d0","d1", "memory");
  701. }
  702.  
  703. #undef BASE_EXT_DECL
  704. #undef BASE_EXT_DECL0
  705. #undef BASE_PAR_DECL
  706. #undef BASE_PAR_DECL0
  707. #undef BASE_NAME
  708.  
  709. __END_DECLS
  710.  
  711. #endif /* _INLINE_OBJC_H */
  712.